\documentclass[10.5pt, a4paper]{article}

\usepackage{xeCJK}
\newCJKfontfamily{\heiti}[AutoFakeBold={3.17}]{SimHei}
\usepackage{pifont}

\usepackage{geometry}
\geometry{
    left = 0.6in,
    right = 0.6in,
    top = 0.8in,
    bottom = 1.0in
}
\usepackage{amssymb,amsbsy,amsmath,xcolor,mathrsfs,graphicx}
\usepackage{listings}
\usepackage{tasks}
\settasks{
    label = \Alph*. ,
    label-width = 16pt
}

\renewcommand{\title}[3]{
    \begin{center}
        \Large\heiti #1~年~#2~月 Python~#3级考试
    \end{center}
}
\newcommand{\TimeAndName}[1]{
    \begin{center}
        考试时间:~#1~ 分钟 \qquad\qquad\qquad\qquad 姓名:\underline{\quad\quad\quad\quad}
    \end{center}
}

\begin{document}
    \lstset{
        language = python,
        keywordstyle = \color{orange}\bfseries,
        emph = {print,bool,chr,ord,sorted,float,type,oct,hex,abs,sum,len,int,open,list,map,
        str,input,range},
        emphstyle = \color{purple}\bfseries,
        showspaces = false,
        basicstyle = \ttfamily,
        morekeywords = {True,False}
    }

    \title{2021}{12}{一}
    
    \TimeAndName{60}
    
    \vspace{1cm}
    {\noindent\heiti 第一部分、单选题(共 25 题,每题 2 分,共50分.)}

    \begin{enumerate}
        % 1
        \item 昨天的温度是5摄氏度，今天降温7摄氏度，今天的温度是多少摄氏度?(\qquad)
        \begin{tasks}(4)
            \task 12
            \task 7
            \task 2
            \task $-2$
        \end{tasks}
    
        % 2
        \item 分析下面程序，关于程序说法正确的是?(\qquad)
        \begin{lstlisting}
            x1="11"
            x2="12"
            x3=x1+x2
            print(x3)
            x4=int(x1)+int(x2)
            print(x4)
        \end{lstlisting}
        \begin{tasks}(2)
            \task 程序执行输出的x3与x4均为数值数据
            \task print(x3)表示的含义为：打印整数相加
            \task print(x4)表示的含义为：打印字符串相加
            \task 程序执行输出x3为：1112，x4为：23
        \end{tasks}

        % 3
        \item 编写一个程序，实现下面的功能：输入1个三位数时，自动会输出这个三位数的十位上的数字。小明已经写好了程序，但是由于不小心把第二行程序给删掉了，第一行代码是\lstinline!number=int(input("请输入一个三位数"))! ，最后一行的代码分别是\lstinline!print(number_2)!。请您帮小明选择下面哪个程序代码作为中间一行代码才是正确的?(\qquad)
        \begin{tasks}(2)
            \task number\_2=(number-number//100*100)//10
            \task 	number\_2=(number-number\%100*100)\%10
            \task number\_2=(number-number**100*100)**10
            \task number\_2=(number-number/100*100)/10
        \end{tasks}
    
        % 4
        \item 已知a=2,b=3,赋值语句\lstinline!a*=b+5!执行后，a的值是多少?(\qquad)
        \begin{tasks}(4)
            \task 11
            \task 16
            \task 13
            \task 26
        \end{tasks}

        % 5
        \item 以下哪个选项可以绘制出一个大小为50的圆点？（默认前面导入库文件命令为 \lstinline!import turtle!）?(\qquad)
        \begin{tasks}(2)
            \task \lstinline!turtle.dot()!
            \task \lstinline!turtle.dot('red',50)!
            \task \lstinline!dot(50)!
            \task \lstinline!turtle.dot(50,'red')!
        \end{tasks}

        % 6
        \item 用turtle绘制一个大小如图所示的圆，\lstinline!turtle.circle( )!括号中需要填写哪个选项?(\qquad)
        
        \begin{minipage}{.1\textwidth}
            \includegraphics[width=\textwidth]{6.png}
        \end{minipage}
        \begin{minipage}{.8\textwidth}
            \begin{tasks}(4)
                \task 100*2
                \task 100
                \task 50
                \task 200
            \end{tasks}
        \end{minipage}

        % 7
        \item 已知a=4，b=7那么\lstinline{print(a!=b)}的结果为?(\qquad)
        \begin{tasks}(4)
            \task 4
            \task 7
            \task False
            \task True
        \end{tasks}

        % 8
        \item 输入一个整数6，输出的结果为?(\qquad)
        \begin{lstlisting}
            a=input('请输入一个整数')
            b=a*4
            print(b)
        \end{lstlisting}
        \begin{tasks}(4)
            \task 24
            \task 6
            \task 6666
            \task 4
        \end{tasks}

        % 9
        \item \lstinline!print(21//4)!的结果是?(\qquad)
        \begin{tasks}(4)
            \task 5
            \task 1
            \task 4
            \task 5.25
        \end{tasks}

        % 10
        \item \lstinline!turtle.clear()!命令的作用是?(\qquad)
        \begin{tasks}
            \task 清空turtle窗口，但是turtle的位置和状态不会改变;
            \task 	清空turtle窗口，turtle的位置和状态会初始化;
            \task 清空turtle中的变量，但是turtle的位置和状态不会改变;
            \task 	清空turtle中的变量，turtle的位置和状态会初始化;
        \end{tasks}

        \newpage
        % 11
        \item 下列代码的执行结果是?(\qquad)
        \begin{lstlisting}
            a=2
            b=3
            a=5
            print(a**b-b/2*10)
        \end{lstlisting}
        \begin{tasks}(4)
            \task 110.0
            \task 110
            \task 49.0
            \task 49
        \end{tasks}

        % 12
        \item 下列代码执行会报错的选项是?(\qquad)
        \begin{tasks}(4)
            \task 
            \lstinline!	a='6'!\\
            \lstinline!	c=1+eval(a)!\\
            \lstinline!	print(c)!
            \task
            \lstinline!	a=24!\\
            \lstinline!	c='10'+str(a)!\\
            \lstinline!	print(c)!
            \task 
            \lstinline!	b=6!\\
            \lstinline!	c=a+b!\\
            \lstinline!	print(c)!
            \task 
            \lstinline!	a='ha'!\\
            \lstinline!	c=a*2!\\
            \lstinline!	print(c)!
        \end{tasks}

        % 13
        \item  根据运算优先级，请将下列运算按由高到低的顺序进行排序，并选出正确答案?(\qquad)
        
        \ding{172} 圆括号内的项目

        \ding{173} 幂运算和根运算

        \ding{174} 乘法和除法

        \ding{175} 加法和减法
        \begin{tasks}(4)
            \task \ding{172}\ding{173}\ding{174}\ding{175}
            \task \ding{173}\ding{174}\ding{175}\ding{172}
            \task \ding{175}\ding{174}\ding{172}\ding{173}
            \task \ding{175}\ding{172}\ding{173}\ding{174}
        \end{tasks}

        % 14
        \item \lstinline!type()!函数返回对象的类型，那么\lstinline!print(type("354>324"))!输出的结果是?(\qquad)
        \begin{tasks}(4)
            \task <class 'str'>
            \task <class 'int'>
            \task <class 'float'>
            \task <class 'bool'>
        \end{tasks}
        
        % 15
        \item 在turtle库中的指令，一般可以用\lstinline!turtle.speed(speed)!来设置画笔移动速度，画笔绘制的速度范围是整数。以下正确的速度范围是?(\qquad)
        \begin{tasks}(4)
            \task 0到5的整数
            \task 0到10的整数
            \task 0到100的整数
            \task 0到20的整数
        \end{tasks}

        % 16
        \item 以下哪个符号不可能作为Python单行或多行注释使用的基本符号?(\qquad)
        \begin{tasks}(4)
            \task \#
            \task \lstinline!'''!
            \task \lstinline!*!
            \task \lstinline!"""!
        \end{tasks}

        % 17
        \item 下列关于Python程序设计语言的说法，错误的是?(\qquad)
        \begin{tasks}
            \task Python语法简洁、清晰，并且具有丰富和强大的类库
            \task Python是一种面向对象、解释型计算机程序设计语言
            \task Python只能在Windows操作系统上使用
            \task Python的源程序以.py为扩展名
        \end{tasks}

        % 18
        \item 执行\lstinline!print('"10+20="10+20')!后，结果等于?(\qquad)
        \begin{tasks}(4)
            \task 10+20=30
            \task "10+20"=30
            \task 报错
            \task "10+20="10+20
        \end{tasks}

        % 19
        \item Python数据类型，下列说法不正确的是?(\qquad)
        \begin{tasks}(2)
            \task int可以转换为float型
            \task float型不能转换为int型
            \task int代表的是整型
            \task type()函数可以查看变量的数据类型
        \end{tasks}

        % 20
        \item 下面哪个字符不能用做变量名?(\qquad)
        \begin{tasks}(4)
            \task the
            \task is
            \task yes
            \task no
        \end{tasks}

        % 21
        \item 下方代码绘制出的图形是哪个?(\qquad)
        \begin{lstlisting}
            import turtle 
            turtle.color('green') 
            turtle.circle(80) 
            turtle.color('red') 
            turtle.begin_fill() 
            turtle.circle(30) 
            turtle.end_fill()
        \end{lstlisting}
        \begin{tasks}(4)
            \task \includegraphics[width=.05\textwidth]{21a.png}
            \task \includegraphics[width=.05\textwidth]{21b.png}
            \task \includegraphics[width=.05\textwidth]{21c.png}
            \task \includegraphics[width=.05\textwidth]{21d.png}
        \end{tasks}

        \newpage
        % 22
        \item \lstinline{print(1<2 and 3<2 or 3<4 and 'a'!='a' or not 2+3>=6)}的结果是?(\qquad)
        \begin{tasks}(4)
            \task False
            \task True
            \task 2
            \task 1
        \end{tasks}

        % 23
        \item Turtle库中，直接跳转到$(x,y)$点的命令是?(\qquad)
        \begin{tasks}(4)
            \task turtle.go(x,y)
            \task turtle.setup(y,x)
            \task turtle.goto(x,y)
            \task turtle.forward(x,y)
        \end{tasks}

        % 24
        \item Turtle库中，用于设置画笔的颜色的命令是?(\qquad)
        \begin{tasks}(4)
            \task turtle.speed()
            \task turtle.pencolor()
            \task turtle.penup()
            \task turtle.pensize()
        \end{tasks}

        % 25
        \item 以下哪个是Python保存文件时的文件扩展名?(\qquad)
        \begin{tasks}(4)
            \task .yp
            \task .py
            \task .ppy
            \task .yyp
        \end{tasks}
    \end{enumerate}

    \vspace{1cm}
    {\noindent\heiti 第二部分、判断题(共 10 题,每题 2 分,共20分.)}
    \begin{enumerate}
        \setcounter{enumi}{25}
        % 26
        \item 变量名大小写是没有区分的，如变量名stuname和StuName是没区别的(\qquad)

        %27
        \item 	
        Python可以同一行显示多条语句，方法是在语句中间用分号“；”分开(\qquad)
        
        %28
        \item 运行下列Python代码可以画出一个绿色的圆(\qquad)
        \begin{lstlisting}
            import turtle 
            turtle.penup() 
            turtle.color('green') 
            turtle.circle(50) 
            turtle.pendown()
        \end{lstlisting}
  
        %29
        \item 在Python中输入\lstinline!80/4//3!,计算结果为6.0(\qquad)
        
        %30
        \item turtle库中，我们用\lstinline!turtle.setup()!函数来设置画布大小，参数width,height为小于等于1.0的小数时，表示的是宽和高占据电脑屏幕的比例(\qquad)
        
        %31
        \item 输入\lstinline!print(7//2)!,输出结果为3.0(\qquad)
        
        %32
        \item Python语言会要求缩进，但是不严格缩进，也不影响代码运行(\qquad)
        
        %33
        \item 在Python中，对输入的数学比较运算式进行判断，当输入"3>=2"时（注：输入的内容不包含双引号），Python运行的结果是“True”(\qquad)
        
        %34
        \item IDLE的交互式编辑窗口和脚本式编辑窗口之间的主要外观区别之一是：脚本式有"\lstinline!>>>!"命令执行提示符，而交互式没有(\qquad)
        
        %35
        \item 在安装了Python环境的PC机上，可以在命令窗口中执行C:>python script.py来运行python程序（script.py为文件名）(\qquad)
    \end{enumerate}

    \newpage
    {\noindent\heiti 第三部分、编程题(共 2 题,共30分.)}
    \begin{enumerate}
        \setcounter{enumi}{35}
        
        % 36
        \item 描述:
        
        假设孩子的身高完全由爸爸和妈妈的遗传因素决定，预测一下长大后孩子的身高是多少？

        孩子获得了爸爸妈妈各一半的遗传基因，所以可以用以下公式计算孩子未来的身高。（单位：厘米）

        孩子未来的身高=（爸爸的身高+妈妈的身高+13乘以性别系数）/2

        如果是“男孩”，性别系数值为“1”；如果是“女孩”，则性别系数值为“-1”。

        【输入格式】：

        第一行输入一个数字，代表爸爸的身高

        第二行输入一个数字，代表妈妈的身高

        第三行输入一个数字（1或-1），代表性别系数
        
        （输入使用input()，并有相应提示信息）

        【输出格式】：
       
        输出孩子未来的身高。
          
        （输出使用print()，并有相应提示信息）
        \vfill

        %37
        \item 如图所示绘制四个圆：
        
        \begin{minipage}{.55\textwidth}
            \begin{tasks}[label=(\arabic*)]
                \task 海龟的初始位置的坐标为（0，0）；
                \task 绘制第1个左上方的圆形，半径为40；
                \task 绘制第2个左下方的圆形，半径为40；
                \task 海龟由初始位置坐标（0，0）移动至坐标（80，0）；
                \task 绘制第3个右上方的圆形，半径为40；
                \task 绘制第4个右下方的圆形，半径为40；
            \end{tasks}
        \end{minipage}
        \begin{minipage}{.35\textwidth}
            \centering
            \includegraphics[width=\textwidth]{37.png}
        \end{minipage}
        
        \vfill
    \end{enumerate}

    \newpage
    \begin{center}
        \Huge \heiti 参考答案
    \end{center}

        \begin{tasks}[label=\arabic*.](5)
            \task D
            \task D
            \task A
            \task B
            \task D

            \task B
            \task D
            \task C
            \task A
            \task A

            \task A
            \task C
            \task A
            \task A
            \task B

            \task C
            \task C
            \task D
            \task B
            \task B

            \task D
            \task B
            \task C
            \task B
            \task B

            \task $\times$
            \task $\checkmark$
            \task $\times$
            \task $\checkmark$
            \task $\checkmark$

            \task $\times$
            \task $\times$
            \task $\checkmark$
            \task $\times$
            \task $\checkmark$
        \end{tasks}

        \begin{enumerate}
            \setcounter{enumi}{35}
            \item 【判分标准】：
            
            \begin{tasks}[label=(\arabic*)]
                \task 有输入语句并且有清楚的提示字符串；（每个一分，共3分）
                \task 有输出语句并且按照题意输出；（2分）
                \task 有类型转化语句；（2分）
                \task 有计算语句；（2分）
                \task 程序运行结果符合题目要求。（1分）
            \end{tasks}

            \item 【判分标准】：
            
            \begin{tasks}[label=(\arabic*)]
                \task 海龟初始位置在画布中心（2分）
                \task 可以正确绘制第1个左上方的圆（4分）
                \task 可以正确绘制第2个左下方的圆（4分）
                \task 海龟移动到正确的位置（2分）
                \task 可以正确绘制第3个右上方的圆（4分）
                \task 可以正确绘制第4个右下方的圆（4分）
            \end{tasks}
        \end{enumerate}
\end{document}